KCTF 晋级赛Q3「防守篇」来了!最全参赛指南看这里
看雪CTF比赛分为两个阶段:
第一阶段是防守篇,防守方根据比赛要求制作题目,根据题目被破解的时间排名,被破解时间长者胜出。
第二阶段为攻击篇,攻击第一阶段的题目,根据攻击成功的时间与题目排名,破解时间短且破解题目数多者胜。
既给了防守方足够的施展空间,也避免过度浪费攻击方的时间。从攻防两个角度看,都是个难得的竞技和学习机会。
2019 KCTF 晋级赛Q3 防守篇
活动时间:2019年8月1日~9月10日(CTF征题阶段)
活动地点:看雪CTF 官方网站 🔗 https://ctf.pediy.com/
主办方:
赛制:本届看雪CTF团队赛为线上赛,由论坛会员自由组成攻、防两方团队,每个团队人数不超过 5人。由防守方出题,攻击方夺旗。
攻防团队通过晋级赛,争取决赛名额。晋级赛共有三场比赛,分别为Q1、Q2、Q3。更详细的比赛关系,请看此帖:https://bbs.pediy.com/thread-249064.htm
防守篇-比赛赛制
防守方如何参赛?
1、 提交题目
(1)参加防守的团队,每个团队需要提供一个防守题目到征题平台。
(2)评委审核通过后方可作为防守方参赛,审核结果在攻击赛开始前一天公布。
(3)晋级赛阶段(Q1、Q2、Q3),每个防守方团队可以提交多题,但本赛季仅可参选1题。
(4)参赛题目请提交至 2019 看雪CTF提交区:https://bbs.pediy.com/forum-122.htm
2、积分规则
(1)根据防守题被破解的次数和时间,计算防守题的难度分,进而得到防守方得分。防守方得分 = 防守题难度分。
因此每道题的分数都可能随着赛事的发展会发生变化。比赛结束时的分数将决定最终比赛结果。
3、难度分计算方法
1)每道题的原始难度系数= - log(k*sigma(1/Bi)),其中k是此题被破解的次数,Bi是此题的被破解时间,i从1到k。
2)将每道题的原始难度系数线性归一化到[0,1],即得到每道题的难度系数。注:在比赛中,尚未被破解的题(含尚未开始比赛的题),暂计其难度系数为1。
3) 解释
i. 被破解次数越少、被破解时间越长的防守题,其难度系数越大。
ii. 最简单的题难度系数为0,最难的题为1。
iii. 最简单的题的难度分是:出题基本分;最难的题是:出题基本分 + 难度加权分
1)若比赛结束时还无人破解,则额外获得一血加分。
一血加分 = 防守题难度分 × 一血加权系数(20%)
解释:一血的定义是指,第一时间破解了的题目。
多解罚分 = 此题难度分 × 多解罚分系数(20% )
如果防守题被发现多解,则给防守方1次修改机会,并扣多解罚分。
若修改后又多解,则下线退赛,攻击方在此题获得的成绩保留不受影响。
征题规则
1、征题范围
PWN、CrackMe(Windows、Android)、WEB、智能硬件等相关题目。
2019年1月31日~2019年12月31 日
将从征集的题目里抽选出一定数量较为优秀的题目来参与看雪CTF 2019团队赛,其他符合规则的题目将录入平台数据库备用。
5.1 关于PWN的设计规则
> 漏洞包括不限于堆栈溢出、UAF、DOUBLE FREE、OFF BY ONE、格式 化、逻辑错误等漏洞。
> 提供稳定的漏洞利用EXP,攻击者根据漏洞攻击成功后能获得flag,flag格 式flag{***}。
5.2 关于Window平台CrackMe设计规则
如果选手采用新模式参赛,必须在提交题目时明确参赛模式,否则默认以传统模式参赛。
方案一(老规则)
A) 关于注册码
1) CrackMe应有且仅有唯一注册码,除给定的注册码外。如果 CrackMe 被发现多解,则给防守方1次修改机会,并扣多解罚分。若修改后又多解,则下线退赛,攻击方在此题获得的成绩保留不受影响。
CrackMe的注册码字符集限定为['!','~'],即ASCII码范围是[33,126],共94个可选字符。不允许将注册码绑定硬件ID。 2)CrackMe界面参赛CrackMe界面必须有且仅有注册码输入项,例如类似的(界面仅供参考,可以是控制台):
3)CrackMe输入
i. CrackMe在没有被附加调试的情况下运行时,第一次运行时输入正确注册码,必须显示成功提示信息,若是重启验证的,在重启后必须显示。
ii. 在CrackMe没有被改动且没有被其他程序干扰的情况下,只要输入了注册码,显示了成功信息,则认为该注册码是正确的,否则设计不合理。
4)CrackMe输出显示
i. 注册成功,要出现成功提示信息。
ii. CrackMe里不允许出现虚假的注册成功提示信息。
B)算法规则
1)不鼓励穷举
在当前技术条件下,序列号从理论上讲,是可逆或可求出来的。如果破解者必须通过穷举才能得到注册码的,设计文档里一定要描述清楚,并且将穷举代码和程序发给评委验证。
评委验证时,如果穷举时间超过5分钟则不通过,另外如果CrackMe的启动时间超过10秒也不通过,需要返回修改,每次比赛每个提交的题目有两次验证机会。
2)其他限制条件
i. 所有参赛 CrackMe 必须可以在 WIN10/32、WIN10/64 、WIN7/32、WIN7/64、WINXP其中一种系统正确运行。
ii. 所有 CrackMe 不可使用第三方保护工具来保护CrackMe,例如第三方壳和VM.,允许用自己未公布的壳或vm或其他手工处理的方法来保护程序,但必须将保护该CrackMe所使用的壳或VM或其他手工处理的方法与CrackMe一同提交,评委审核通过后方可参赛。
所提交的壳或VM或其他手工处理的方法将在赛后向广大会员公开。凡违反该比赛规则的CrackMe将作废,设计该CrackMe的会员将取消本届比赛的参赛资格。
iii. 所有的CrackMe执行后,不能干扰破解者正常使用电脑(比如关闭显示器、禁用键盘鼠标、关机、暴力占用内存cpu资源使电脑死机、破坏电脑文件等类似操作不允许),但允许采用技术手段关闭调试器,防止破解者破解。
iv. 所有CrackMe设计的总体原则是绿色安全,不可含木马或 rootkit,没有任何危险或恶意程序,不能对系统进行破坏,可以正常结束,结束后不能给系统留下垃圾(比如临时文件要删除,驱动要卸载干净),不可使系统重启。
v. CrackMe如果有任何危险或者恶意行为,ban ID。如果有杀软或者360等安全软件报CrackMe有异常的行为,评委有权要求参赛选手解释。
vi. CrackMe 不可以联机到网络,或使用服务器注册,CrackMe必须可以在单机运行。
vii. 所提交的参与CrackMe运行的文件包括.exe.dll.sys等一起在不打包压缩的时总大小不超过1M。
viii. 如果评审有怀疑,例如怀疑加壳伪装,可以要求队伍提供CrackMe 的源码。
ix. 如果评审认为 CrackMe 使用了不合理的设计,或违反比赛精神,便会判定CrackMe无效,取消奖品,并把参赛者提交的技术文件,在论坛公开,让会员公开讨论。
3) 放宽技术限制
i. 不限制使用套娃。可以使用任何数据和代码变换;
ii. 不限制线索隐藏方式。可以将线索以任何形式置于CrackMe的任何位置;
方案二(新规则)
A)界面
1)防守方发布的Crackme应允许输入用户名和序列号,并提示用户名和序列号是否匹配正确。例如类似的(界面仅供参考,可以是控制台):
2)防守方在发布CrackMe时,应向大众公开一组用户名和序列号,即 “ Name/Serial ” ,其中公开的这个用户名“Name“,必须是该CrackMe文件的 hash值。hash算法指定为SHA256,用户名为hash结果的前64bit的16进制大写文字。
例如:参赛CrackMe.exe文件的hash结果是
50be38745d82d93f3a974701e86c1cafcbc2ec83d1f1913d216079022ba7317f
则用户名 “Name“ 应为 50BE38745D82D93F
如果CrackMe不止一个文件的话,计算hash时应包含CrackMe的所有文件(第三方共享库除外)。
参考hash计算工具:http://www.atool9.com/file_hash.php
B)判胜条件
1)若攻击方找出特定用户名(“KCTF”,不含引号)的序列号,经KCTF系统自动确认,将认定攻击方获胜;
2)若攻击方找出特定用户名(“KCTF”,不含引号) 的第二个序列号,经KCTF官方确认,将认定攻击方获胜,且此题多解;
C)规则限制
1)干净环境中,10秒内出提示且不能虚假提示;
2)KeyGen算法不能基于“未在CrackMe中公开的秘密信息”。如果需要穷举,则穷举时间必须小于5分钟;
3)不能依赖网络、不能依赖硬件;
4)禁止使用第三方保护工具、禁止恶意破坏机器;
5)不超过10M;
6)同一用户名不应有多个序列号,否则罚分。
7)放宽技术限制
i. 不限制使用套娃。可以使用任何数据和代码变换;
ii. 不限制线索隐藏方式。可以将线索以任何形式置于CrackMe的任何位置;
iii. 序列号字符集限定为['!','~'],即ASCII码范围是[33,126],共94个可选字符。
参考Windows平台规则,确保CrackMe能在常见移动端稳定运行,题目打包压缩后不得超过3M,不建议采用LLVM保护。
> 漏洞包括不限于注入、命令执行、文件上传等漏洞。
> 攻击者根据漏洞攻击成功后能获得flag,flag格式flag{***}。
来自KCTF组委会
▲
END
▼
长按上方二维码,了解更多比赛详情